﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TotalNews.Helpers
{
    public class PaginatedList<T>: List<T>
    {
        public int PageIndex  { get; private set; }
        public int PageSize   { get; private set; }
        public int TotalCount { get; private set; }
        public int TotalPages { get; private set; }

        public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) {
            try
            {
                PageIndex = pageIndex;
                PageSize = pageSize;
                TotalCount = source.Count();
                TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);

                this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
            }
            catch
            {
            }
        }

        public bool HasPreviousPage {
            get {
                return (PageIndex > 0);
            }
        }

        public bool HasNextPage {
            get {
                return (PageIndex+1 < TotalPages);
            }
        }
    }
}